package cc.cary.warehouse.config;

import cc.cary.warehouse.untils.Beans;
import cc.cary.warehouse.untils.SpringContextUtils;
import org.springframework.lang.NonNull;

import java.util.Optional;

/**
 * 获取配置
 *
 * @author Cary
 * @date 2023/1/16
 */
public class Config {
    /**
     * 获取配置常量, 优先级分别是: 系统参数 > 环境变量 > springboot 配置
     */
    @NonNull
    public static String get(String key) {
        String systemValue = System.getProperty(key, "");
        String envValue = Optional.ofNullable(System.getenv(key)).orElse("");
        String springValue = Optional.ofNullable(SpringContextUtils.getContext().getEnvironment().getProperty(key)).orElse("");

        return Beans.strNotEmpty(systemValue) ? systemValue : (Beans.strNotEmpty(envValue) ? envValue : springValue);
    }
}
